package com.example.java_gobang.utils;

import org.springframework.util.DigestUtils;
import org.springframework.util.StringUtils;

import java.util.UUID;

/**
 * 用户加密
 */
public class SecurityUtils {
    //加密
    public static String encrypt(String password){
        //随机生成盐值
        String salt = UUID.randomUUID().toString().replace("-","");
        //加密 MD5(明文+盐值)
        String finalPassword = DigestUtils.md5DigestAsHex((password+salt).getBytes());
        //最终密码为盐值+MD5
        return salt+finalPassword;
    }
    /**
     * 校验
     * @param inputPassword//用户登录时的密码
     * @param sqlPassword//数据库中存储的密码，盐值+MD5(明文+盐值)
     * @return
     */
    public static Boolean verify(String inputPassword,String sqlPassword){
        if(!StringUtils.hasLength(inputPassword)){
            return false;
        }
        if(sqlPassword == null || sqlPassword.length()!=64){
            return false;
        }
        //截取盐值
        String salt = sqlPassword.substring(0,32);
        //根据用户的密码进行加密，MD5(明文+盐值)
        String finalPassword = DigestUtils.md5DigestAsHex((inputPassword+salt).getBytes());

        return (salt+finalPassword).equals(sqlPassword);
    }
}
